perm filename CORMON[SS,SYS]1 blob sn#360562 filedate 1978-06-09 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE CORMON
C00008 ENDMK
C⊗;
TITLE CORMON

;CORTAB ENTRY VALUES
;	0	Block is available.
;	1-77	Block is in use by the job named in this code
;	101	Block is occupied bt the system
;	103	Block does not exist (NXM)
;	105	Block is in use by system as free storage.
;	107	Block is in use as an I/O buffer (SYSBUF for example)
;	110	Block is in use as a page table (not as free storage)

PHYMEM←←4000		;TOTAL NUMBER OF PHYSICAL PAGES IN SYSTEM
NNXMP←←400		;TOTAL NUMBER OF NXM PAGES IN SYSTEM
NMAPP←←=63		;TOTAL NUMBER OF MAP PAGES IN SYSTEM

A←1
B←2
C←3
D←4
E←5
M←6
N←7
T←10
TT←11
TTT←12
W←13
X←14
Y←15
Z←16
P←17

GO:	RESET
	MOVE P,[-100,,PDL-1]
	MOVSI A,377777
	SETPR2 A,
	JRST 4,.
	PUSHJ P,SYMGET
	MOVE A,@AFSBUSY
	MOVEM A,FSBUSY
	MOVE A,@ASYSTOP
	MOVEM A,SYSTOP
	MOVE A,@AFSTOP
	MOVEM A,FSTOP
	MOVE A,@ACORMAX
	MOVEM A,CORMAX
	MOVS A,ACORTAB
	HRRI A,CORTAB
	BLT A,CORTAB+PHYMEM-1		;COPY CORTAB TABLE
	OUTSTR [ASCIZ /FSBUSY = /]
	MOVE T,FSBUSY
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
SYSTOP = /]
	MOVE T,SYSTOP
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
FSTOP-SYSTOP = /]
	MOVE T,FSTOP
	SUB T,SYSTOP
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
Number of SYSBUF pages = /]
	MOVE T,NSYPGS
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
Available user core should be = /]
	MOVEI T,PHYMEM		;TOTAL NUMBER OF PAGES IN SYSTEM
	MOVE TT,FSTOP
	LSH TT,-9
	SUB T,TT
	SUB T,NSYPGS
	SUBI T,NNXMP+NMAPP	;SUBTRACT OUT NXM PAGES AND PAGE MAP PAGES
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
CORMAX = /]
	MOVE T,CORMAX
	LSH T,-9
	PUSHJ P,DECOUT
	SETZM FREE
	SETZM SYS
	SETZM USER
	SETZM NXM
	SETZM FS
	SETZM IO
	SETZM MAP
	MOVSI T,-PHYMEM
CORTB1:	LDB A,[POINT 9,CORTAB(T),26]
	SKIPN A
	AOS FREE
	CAIN A,101
	AOS SYS
	CAILE A,0
	CAIL A,100
	CAIA
	AOS USER
	CAIN A,103
	AOS NXM
	CAIN A,105
	AOS FS
	CAIN A,107
	AOS IO
	CAIN A,110
	AOS MAP
	AOBJN T,CORTB1
	OUTSTR [ASCIZ /
System pages = /]
	MOVE T,SYS
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
FS pages = /]
	MOVE T,FS
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
NXM pages = /]
	MOVE T,NXM
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
MAP pages = /]
	MOVE T,MAP
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
IO buffer pages = /]
	MOVE T,IO
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
Free pages = /]
	MOVE T,FREE
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
User pages = /]
	MOVE T,USER
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
Total pages = /]
	MOVE T,FREE
	ADD T,SYS
	ADD T,MAP
	ADD T,FS
	ADD T,NXM
	ADD T,IO
	ADD T,USER
	PUSH P,T
	PUSHJ P,DECOUT
	POP P,T
	OUTSTR [ASCIZ / = /]
	LSH T,9
	PUSHJ P,DECOUT
	OUTSTR [BYTE (7)15,12]
	EXIT

DECOUT:	PUSHJ P,DECOU0
	OUTCHR ["."]
	POPJ P,

DECOU0:	IDIVI T,=10
	JUMPE T,DECOU1
	HRLM TT,(P)
	PUSHJ P,DECOU0
	HLRZ TT,(P)
DECOU1:	ADDI TT,"0"
	OUTCHR TT
	POPJ P,

SYMGET:	MOVSI T,-NSYMS
SYMGT1:	MOVE B,SYMNAM(T)
	TLZ B,740000
	MOVEI C,0
	MOVEI A,B
	.SYML A,
	JRST 4,.
	MOVE B,SYMNAM(T)
	TLNN B,40000
	ADDI A,400000
	MOVEM A,SYMADR(T)
	AOBJN T,SYMGT1
	POPJ P,

SYMNAM:	RADIX50 0,FSBUSY
	RADIX50 0,SYSTOP
	RADIX50 0,FSTOP
	RADIX50 0,CORMAX
	RADIX50 4,NSYPGS
	RADIX50 0,CORTAB
NSYMS←←.-SYMNAM

SYMADR::
AFSBUSY:0
ASYSTOP:0
AFSTOP:	0
ACORMAX:0
NSYPGS:	0
ACORTAB:0

FSBUSY:	0
SYSTOP:	0
FSTOP:	0
CORMAX:	0
CORTAB:	BLOCK PHYMEM

PDL:	BLOCK 100
FREE:	0
SYS:	0
USER:	0
NXM:	0
FS:	0
IO:	0
MAP:	0

	END GO